home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1999 Spring / macformat-077.iso / Shareware Plus / Development / SpriteWorld 2.2 / SpriteWorld files / Headers / Tiling.h < prev   
Encoding:
Text File  |  1999-01-05  |  5.3 KB  |  250 lines  |  [TEXT/CWIE]

  1. ///--------------------------------------------------------------------------------------
  2. //    Tiling.h
  3. //
  4. //    By: Vern Jensen 10/27/95
  5. ///--------------------------------------------------------------------------------------
  6.  
  7.  
  8. #ifndef __TILING__
  9. #define __TILING__
  10.  
  11. #ifndef __SOUND__
  12. #include "Sound.h"
  13. #endif
  14.  
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18.  
  19. #if PRAGMA_ALIGN_SUPPORTED
  20. #pragma options align=mac68k
  21. #endif
  22.  
  23.  
  24. ///--------------------------------------------------------------------------------------
  25. //    Tiling definitions
  26. ///--------------------------------------------------------------------------------------
  27.  
  28. typedef enum    // Used to SWCheckSpriteWithTiles
  29. {
  30.     kSWEntireSprite = 0,
  31.     kSWTopSide,
  32.     kSWRightSide,
  33.     kSWBottomSide,
  34.     kSWLeftSide
  35. } SWTileSearchType;
  36.  
  37. #define    kNumTileLayers        10
  38.  
  39.  
  40. typedef short** TileMapPtr;
  41.  
  42. typedef struct TileMapStruct
  43. {
  44.     short        numRows;
  45.     short        numCols;
  46.     TileMapPtr    tileMap;
  47.     Handle        tileMapDataH;
  48.     Handle        arrayOfPointersH;
  49.     Boolean        isLocked;
  50. } TileMapStruct, *TileMapStructPtr;
  51.  
  52. typedef SW_FUNC void (*TileChangeProcPtr)(
  53.     SpriteWorldPtr spriteWorldP);
  54.  
  55. typedef SW_FUNC void (*TileRectDrawProcPtr)(
  56.     SpriteWorldPtr    spriteWorldP,
  57.     Rect*            updateRectP,
  58.     Boolean            optimizingOn);
  59.  
  60.  
  61. ///--------------------------------------------------------------------------------------
  62. //    tile function prototypes
  63. ///--------------------------------------------------------------------------------------
  64.  
  65. SW_FUNC OSErr SWInitTiling(
  66.     SpriteWorldPtr    spriteWorldP,
  67.     short             tileHeight,
  68.     short            tileWidth,
  69.     short            maxNumTiles);
  70.  
  71. SW_FUNC void SWExitTiling(
  72.     SpriteWorldPtr    spriteWorldP);
  73.  
  74. SW_FUNC OSErr SWInitTilingCache(
  75.     SpriteWorldPtr    spriteWorldP);
  76.  
  77. SW_FUNC OSErr SWCreateTileMap(
  78.     TileMapStructPtr    *tileMapStructPP,
  79.     short                 numTileMapRows,
  80.     short                numTileMapCols);
  81.  
  82. SW_FUNC void SWDisposeTileMap(
  83.     TileMapStructPtr    *tileMapStructPP);
  84.  
  85. SW_FUNC void SWLockTileMap(
  86.     TileMapStructPtr    tileMapStructP);
  87.  
  88. SW_FUNC void SWUnlockTileMap(
  89.     TileMapStructPtr    tileMapStructP);
  90.  
  91. SW_FUNC void SWInstallTileMap(
  92.     SpriteWorldPtr        spriteWorldP,
  93.     TileMapStructPtr    tileMapStructP,
  94.     short                tileLayer);
  95.  
  96. SW_FUNC OSErr SWLoadTileMap(
  97.     TileMapStructPtr    *tileMapStructPP,
  98.     short                 resourceID);
  99.  
  100. SW_FUNC OSErr SWSaveTileMap(
  101.     TileMapStructPtr    tileMapStructP,
  102.     short                 destResID);
  103.  
  104. SW_FUNC OSErr SWResizeTileMap(
  105.     TileMapStructPtr    tileMapStructP,
  106.     short                 numNewTileMapRows,
  107.     short                numNewTileMapCols);
  108.  
  109. SW_FUNC OSErr SWLoadTileFromCicnResource(
  110.     SpriteWorldPtr    spriteWorldP, 
  111.     short            tileID,
  112.     short            cicnID, 
  113.     MaskType        maskType);
  114.  
  115. SW_FUNC OSErr SWLoadTilesFromPictResource(
  116.     SpriteWorldPtr    spriteWorldP, 
  117.     short            startTileID,
  118.     short            endTileID, 
  119.     short            pictResID, 
  120.     short            maskResID,
  121.     MaskType        maskType,
  122.     short            horizBorderWidth,
  123.     short            vertBorderHeight);
  124.  
  125. SW_FUNC void SWDisposeTile(
  126.     SpriteWorldPtr    spriteWorldP,
  127.     short            tileID);
  128.  
  129. SW_FUNC void SWLockTiles(
  130.     SpriteWorldPtr    spriteWorldP);
  131.  
  132. SW_FUNC void SWUnlockTiles(
  133.     SpriteWorldPtr    spriteWorldP);
  134.  
  135. SW_FUNC OSErr SWCreateExtraBackFrame(
  136.     SpriteWorldPtr    spriteWorldP,
  137.     Rect            *frameRect);
  138.  
  139. SW_FUNC void SWDisposeExtraBackFrame(
  140.     SpriteWorldPtr    spriteWorldP);
  141.  
  142. SW_FUNC OSErr SWSetPortToExtraBackFrame(
  143.     SpriteWorldPtr    spriteWorldP);
  144.  
  145. SW_FUNC void SWSetTilingOn(
  146.     SpriteWorldPtr    spriteWorldP,
  147.     Boolean            tilingIsOn);
  148.  
  149. SW_FUNC OSErr SWChangeTileSize(
  150.     SpriteWorldPtr    spriteWorldP,
  151.     short             tileHeight,
  152.     short            tileWidth);
  153.  
  154. SW_FUNC void SWSetSpriteLayerUnderTileLayer(
  155.     SpriteLayerPtr    spriteLayerP,
  156.     short            tileLayer);
  157.  
  158. SW_FUNC OSErr SWSetTileMaskDrawProc(
  159.     SpriteWorldPtr    spriteWorldP,
  160.     DrawProcPtr        drawProc);
  161.  
  162. SW_FUNC OSErr SWSetPartialMaskDrawProc(
  163.     SpriteWorldPtr    spriteWorldP,
  164.     DrawProcPtr        drawProc);
  165.  
  166. SW_FUNC void SWSetTileChangeProc(
  167.     SpriteWorldPtr        spriteWorldP,
  168.     TileChangeProcPtr    tileChangeProc);
  169.  
  170.  
  171.  
  172. SW_FUNC OSErr SWDrawTilesInBackground(
  173.     SpriteWorldPtr    spriteWorldP);
  174.  
  175. SW_FUNC void SWDrawTile(
  176.     SpriteWorldPtr    spriteWorldP,
  177.     short            dstTileLayer,
  178.     short            tileRow,
  179.     short            tileCol,
  180.     short            tileID);
  181.  
  182. SW_FUNC void SWDrawTilesInRect(
  183.     SpriteWorldPtr    spriteWorldP,
  184.     Rect*            updateRectP,
  185.     Boolean            faster);
  186.  
  187. SW_FUNC void SWDrawTileLayersInRect(
  188.     SpriteWorldPtr    spriteWorldP,
  189.     Rect*            updateRectP,
  190.     Boolean            optimizingOn);
  191.  
  192. SW_FUNC void SWDrawTilesAboveSprite(
  193.     SpriteWorldPtr    spriteWorldP,
  194.     Rect*            updateRectP,
  195.     short            startLayer);
  196.  
  197. SW_FUNC void SWResetTilingCache(
  198.     SpriteWorldPtr    spriteWorldP);
  199.  
  200. SW_FUNC static void SWAddChangedRect(
  201.     SpriteWorldPtr    spriteWorldP, 
  202.     Rect            *changedRectP);
  203.  
  204. SW_FUNC void SWChangeTileImage(
  205.     SpriteWorldPtr    spriteWorldP,
  206.     short            tileID,
  207.     short            currentFrame);
  208.  
  209. SW_FUNC void SWUpdateTileOnScreen(
  210.     SpriteWorldPtr    spriteWorldP,
  211.     short            tileID);
  212.  
  213. SW_FUNC void SWResetCurrentTileImages(
  214.     SpriteWorldPtr    spriteWorldP);
  215.  
  216. SW_FUNC short SWReturnTileUnderPixel(
  217.     SpriteWorldPtr    spriteWorldP,
  218.     short    tileLayer,
  219.     short    pixelCol,
  220.     short    pixelRow);
  221.  
  222. SW_FUNC Boolean SWCheckSpriteWithTiles(
  223.     SpriteWorldPtr    spriteWorldP,
  224.     SpritePtr        srcSpriteP, 
  225.     SWTileSearchType searchType,
  226.     Rect            *insetRectP,
  227.     short            startTileLayer,
  228.     short            endTileLayer,
  229.     short            firstTileID,
  230.     short            lastTileID,
  231.     Boolean            fixPosition);
  232.     
  233. SW_FUNC void SWWrapRectToWorkArea(
  234.     SpriteWorldPtr    spriteWorldP,
  235.     Rect*            dstRectP);
  236.  
  237. SW_FUNC void SWWrapRectFromExtraBackFrame(
  238.     SpriteWorldPtr    spriteWorldP,
  239.     Rect            *dstRectP);
  240.  
  241.  
  242. #if PRAGMA_ALIGN_SUPPORTED
  243. #pragma options align=reset
  244. #endif
  245.  
  246. #ifdef __cplusplus
  247. }
  248. #endif
  249.  
  250. #endif /* __TILING__ */